package com.rockxin.cat.network;

import com.rockxin.cat.bean.BannerBean;
import com.rockxin.cat.bean.BidDetailsBean;
import com.rockxin.cat.bean.MyBankCardBean;
import com.rockxin.cat.bean.NoticeListBean;
import com.rockxin.cat.bean.RecommendAwardBean;
import com.rockxin.cat.bean.RedPacketBean;
import com.rockxin.cat.bean.UseBean;
import com.rockxin.cat.bean.CapitalLogBean;
import com.rockxin.cat.bean.FyBean;
import com.rockxin.cat.bean.LendRecordBean;
import com.rockxin.cat.bean.MyBankCardBean;
import com.rockxin.cat.bean.NoticeListBean;
import com.rockxin.cat.bean.RechargeBean;
import com.rockxin.cat.bean.RecommendAwardBean;
import com.rockxin.cat.bean.RedPacketBean;
import com.rockxin.cat.bean.UseBean;
import com.rockxin.cat.bean.UserBean;

import java.util.HashMap;
import java.util.List;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import rx.Observable;

/**
 * <b>类名称：    NetApi             <br/>
 * <b>类描述：                        <br/>
 * <b>创建人：    Lans               <br/>
 * <b>创建时间：  2018/3/5 11:57     <br/>
 * <b>修改人：                        <br/>
 * <b>修改时间：                      <br/>
 * <b>修改备注：                      <br/>
 *
 * @version 1.0.0 <br/>
 */
public interface NetApi {
    //注册
    @GET("?r=api/default/reg")
    Observable<HttpResult> regist(@Query("username") String username, @Query("password") String password, @Query("mobile_email") String mobile_email, @Query("code") String code);

    //手机邮箱注册验证码接口
    @GET("?r=api/default/get_register_verify_code")
    Observable<HttpResult> sendCode(@Query("user_mobile") String user_mobile);

    //登录
    @GET("?r=api/default/login")
    Observable<HttpResult<UseBean>> login(@Query("mobile_email") String mobile_email, @Query("password") String password);

    //找回密码验证码
    @GET("?r=api/default/get_password_verify_code")
    Observable<HttpResult> sendCodeReset(@Query("user_mobile") String user_mobile);

    //重置密码
    @GET("?r=api/default/modifypwd")
    Observable<HttpResult> resetPasswd(@Query("mobile_email") String mobile_email, @Query("password") String password, @Query("repassword") String repassword, @Query("code") String code);

    //修改登录密码接口
    @GET("?r=api/default/editpwd")
    Observable<HttpResult> modifyLoginPasswd(@Query("token") String token, @Query("mobile_email") String mobile_email, @Query("password") String password, @Query("repassword") String repassword, @Query("code") String code);

    //公告列表接口
    @GET("?r=api/default/notice")
    Observable<HttpResult<List<NoticeListBean>>> noticeList();

    //公告列表详情
    @GET("?r=api/default/noticeview")
    Observable<HttpResult<UseBean>> noticeInfo(@Query("id") String id);

    //banner列表接口
    @GET("?r=api/default/banner")
    Observable<HttpResult<List<BannerBean>>> bannerList();

    /**
     * 借款列表
     *
     * @param p           当前页数
     * @param level       1(HR),2(E),3(D),4(C),5(B),6(A),7(AA)
     * @param deal_status 借款状态:19(未开始),1(进行中),2(满标),3(流标),4(还款中),5(已还清)
     * @param interest    回馈利率:10(10%以上),12(12%以上),15(15%以上),18(18%以上)
     * @param lefttime    剩余时间:1(1天以内),3(3天以内),6(6天以内),9(9天以内),12(12天以内)
     * @param is_company  借款用户:1(个人借款),2(企业借款)
     * @param months_type 借款期限:1(3个月以内),2(3-6个月),3(6-9个月),4(9-12个月),5(12个月以上)
     */
    @GET("?r=api/default/deallist")
    Observable<HttpResult<List<UseBean>>> loanlist(@Query("p") String p, @Query("level") String level, @Query("deal_status") String deal_status, @Query("interest") String interest, @Query("lefttime") String lefttime, @Query("is_company") String is_company, @Query("months_type") String months_type);

    //借款标的详情
    @GET("?r=api/default/dealview")
    Observable<BidDetailsBean> dealview(@Query("id") String id);


    //设置支付密码接口
    @GET("?r=api/default/addpaypwd")
    Observable<HttpResult> addpaypwd(@Query("token") String token, @Query("password") String password, @Query("repassword") String repassword);

    //修改支付密码接口
    @GET("?r=api/default/editpaypwd")
    Observable<HttpResult> modifyPaypwd(@Query("mobile_email") String mobile_email, @Query("password") String password, @Query("repassword") String repassword, @Query("code") String code);

    //获取后台所有支持银行
    @GET("?r=api/default/getbank")
    Observable<HttpResult<List<UseBean>>> getbankList();

    //绑定银行卡手机验证码接口
    @GET("?r=api/default/get_bindcard_verify_code")
    Observable<HttpResult> sendBindcardCode(@Query("user_mobile") String user_mobile, @Query("token") String Token);

    //绑定银行卡手机验证码接口
    @GET("?r=api/default/deallist")
    Observable<HttpResult> loanList(@Query("user_mobile") String user_mobile, @Query("Token") String Token);

    /**
     * 投标接口
     *
     * @param token           token
     * @param id              标id
     * @param bid_money       投标金额
     * @param interestrate_id 加息券id
     */
    @GET("?r=api/default/dodeal")
    Observable<HttpResult> bid(@Query("token") String token, @Query("id") String id, @Query("bid_money") String bid_money, @Query("interestrate_id") String interestrate_id);

    /**
     * 上上签接口
     *
     * @param token token
     */
    @GET("?r=api/default/shangshangqian")
    Observable<HttpResult> shangshangqian(@Query("token") String token);

    /*我的邀请*/
    @GET("?r=api/default/myinvite")
    Observable<HttpResult<List<RecommendAwardBean>>> myinvite(@Query("type") int type, @Query("token") String token, @Query("p") int page);

    /*我的红包*/
    @GET("?r=api/default/myvoucher")
    Observable<HttpResult<List<RedPacketBean>>> myVoucher(@Query("type") int type, @Query("type2") int type2, @Query("token") String token, @Query("p") int page);

    /*我的借款列表*/
    @GET("?r=api/default/myborrow")
    Observable<HttpResult<List<LendRecordBean>>> myBorrow(@Query("type") int type, @Query("token") String token, @Query("p") int page);

    /*我的资金日志*/
    @GET("?r=api/default/mylog")
    Observable<HttpResult<List<CapitalLogBean>>> myLog(@Query("token") String token, @Query("time_status") int time_status, @Query("p") int page);

    /*用户中心*/
    @GET("?r=api/default/uc")
    Observable<HttpResult<UserBean>> getUserInfo(@Query("token") String token);

    /*提现*/
    @GET("?r=api/default/withdraw")
    Observable<HttpResult> withDraw(@QueryMap HashMap<String, String> stringHashMap);

    /*编辑资料*/
    @GET("?r=api/default/edituc")
    Observable<HttpResult> editPersonal(@QueryMap HashMap<String, String> stringHashMap);

    /*获取银行卡列表*/
    @GET("?r=api/default/bindbank")
    Observable<HttpResult<List<MyBankCardBean>>> getMyBankList(@Query("token") String token, @Query("act") String act);

    /*添加银行卡*/
    @GET("?r=api/default/bindbank&act=add")
    Observable<HttpResult> addBank(@Query("token") String token, @Query("real_name") String real_name, @Query("bankzone") String bankzone, @Query("bank_id") String bank_id, @Query("bankcard") String bankcard, @Query("user_mobile") String user_mobile, @Query("code") String code);


    /*删除银行卡*/
    @GET("?r=api/default/bindbank")
    Observable<HttpResult> deleteBankList(@Query("token") String token, @Query("act") String act, @Query("id") String id);

    /*认证*/
    @GET("?r=api/default/renzheng")
    Observable<HttpResult> renzheng(@Query("token") String token, @Query("real_name") String real_name, @Query("idno") String idno);

    /*退出*/
    @GET("?r=api/default/logout")
    Observable<HttpResult> logout(@Query("token") String token);

    /*充值*/
    @GET("?r=api/default/recharge")
    Observable<RechargeBean> recharge(@QueryMap HashMap<String, String> hashMap);

    /*富有配置*/
    @GET("?r=api/default/fuyouconfig")
    Observable<FyBean> getFyConfig();

    /*上传头像*/
    @POST("?r=api/default/uploadpic_android")
    Observable<HttpResult> upLoad(@Body RequestBody Body);


    /*提现验证码*/
    @POST("r=api/default/get_withdraw_verify_code")
    Observable<HttpResult> getDepositCode(@Query("token") String token, @Query("user_mobile") String user_mobile);
}



